package Planificador.core.algoritmos;

import java.util.ArrayList;

import Planificador.core.proceso.Proceso;

public class AlgoritmoSPNconDesalojo extends Algoritmo {
	public AlgoritmoSPNconDesalojo() {
		super("SPN Preemtive");
	}

	@Override
	public Proceso getSiguiente(ArrayList<Proceso> procesos) {
		if (procesos.isEmpty()) {
			return null;
		}

		Proceso rafagaMasCorta = procesos.get(0);
		for (Proceso p : procesos) {
			if (rafagaMasCorta.getRafagaSiguiente() > p.getRafagaSiguiente()) {
				rafagaMasCorta = p;
			}
		}

		return rafagaMasCorta;
	}

	@Override
	public boolean hayQueDesalojar(Proceso p, ArrayList<Proceso> procesos) {
		Proceso p2 = this.getSiguiente(procesos);

		if ((p != null) && (p2 != null)
				&& (p2.getRafagaSiguiente() < p.getRafagaSiguiente()))
			return true;

		return false;
	}

	@Override
	public boolean hayQueDesalojarPorTimer(Proceso p, ArrayList<Proceso> procesos) {
		return false;
	}
}
